from app import app
from flask_sqlalchemy import SQLAlchemy
from hashlib import md5
ROLE_USER=0
ROLE_ADMIN=1

db = SQLAlchemy(app)
class User(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    nickname = db.Column(db.String(64), index = True, unique = True)
    email = db.Column(db.String(120), index = True, unique = True)
    role = db.Column(db.SmallInteger, default = ROLE_USER)
    posts = db.relationship('Post', backref = 'author', lazy = 'dynamic')
    about_me  = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime)
    
    def is_authenticated(self):
        return True
    
    def is_active(self):
        return True
    
    def is_anonymous(self):
        return False
    
    def get_id(self):
        return unicode(self.id)
    
    def __repr__(self):
        return '<User %r>' %(self.nickname)

    def avatar(self, size):
        return 'http://www.gravatar.com/avatar/' + md5(self.mail).hexdigest() + '?d=mm&s=' + str(size)
    
class Post(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    body = db.Column(db.String(140))
    timestamp  = db.Column(db.DateTime)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    
    def __repr__(self):
        return '<Post %r>' %(self.body)

        

